package com.smartcommunity.entity.vid;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import com.smartcommunity.es.common.EsBasedataEnum;
import com.smartcommunity.utils.DateUtils;
import com.smartcommunity.utils.StringUtils;
import org.apache.commons.collections.CollectionUtils;
import com.alibaba.fastjson.JSON;

import lombok.Getter;
import lombok.Setter;

/**
 * 入库es-basedata vid实体类
 *
 * @author yangyi
 * @since 2023年6月29日
 */
@Getter
@Setter
public class EsBaseVidEntity {
	
	/**
     * 数据类型  1:实有人口  2:车辆 3:房屋  4:vid
     */
    private Integer dataType;

    /**
     * vid
     */
    private String vid;
    
    /**
     * 第一次出现时间
     */
    private Long firstLogTime = 0L;
    
    /**
     * 第一次出现摄像机id
     */
    private String firstCameraId;
    
    /**
     * 最后一次出现时间
     */
    private Long lastLogTime = 0L;
    
    /**
     * 最后一次出现摄像机ID
     */
    private String lastCameraId;
    
    /**
     * 出现频次
     */
    private Integer freq = 0;
    
    /**
     * 姓名
     */
    private String peopleName;
    
    /**
     * 身份证
     */
    private String credentialNo;
    
    /**
     * 聚类人脸图
     */
    private String hqFacePath;
    
    /**
     * 聚类特征
     */
    private String featureId;
    
    /**
     * 小区编码
     */
    private List<String> villageCode;
    
    /**
     * 入库时间
     */
    private Timestamp mrowTime;

    public String toString() {
        return JSON.toJSONString(this);
    }
    
    public static EsBaseVidEntity parseFrom(VidInfo obj) {
    	EsBaseVidEntity esBaseVidEntity = new EsBaseVidEntity();
    	esBaseVidEntity.setDataType(EsBasedataEnum.VID.getIntValue());
    	esBaseVidEntity.setVid(obj.getVid());
    	esBaseVidEntity.setFirstLogTime(obj.getFirstLogTime());
    	esBaseVidEntity.setFirstCameraId(obj.getFirstCameraId());
    	esBaseVidEntity.setLastLogTime(obj.getLastLogTime());
    	esBaseVidEntity.setLastCameraId(obj.getLastCameraId());
    	esBaseVidEntity.setFreq(obj.getFreq());
    	esBaseVidEntity.setPeopleName(obj.getName());
    	esBaseVidEntity.setCredentialNo(obj.getIdCard());
    	esBaseVidEntity.setHqFacePath(obj.getHqFacePath());
    	if(obj.getHqFeatureId()!=null) {
    		esBaseVidEntity.setFeatureId(obj.getHqFeatureId().toString());
    	}
    	List<String> villageCodeList = new ArrayList<String>();
    	if(CollectionUtils.isNotEmpty(obj.getCommunityId())) {
    		obj.getCommunityId().forEach(item->{
    			if(item!=null) {
    				villageCodeList.add(item.toString());
    			}
    		});
    	}
    	esBaseVidEntity.setVillageCode(villageCodeList);
    	esBaseVidEntity.setMrowTime(DateUtils.getNowTimestamp());
		return esBaseVidEntity;
    }
    
    public static VidInfo parseTo(EsBaseVidEntity esVidinfo) {
    	VidInfo vidinfo = new VidInfo();
    	vidinfo.setVid(esVidinfo.getVid());
    	vidinfo.setFirstLogTime(esVidinfo.getFirstLogTime());
    	vidinfo.setFirstCameraId(esVidinfo.getFirstCameraId());
    	vidinfo.setLastLogTime(esVidinfo.getLastLogTime());
    	vidinfo.setLastCameraId(esVidinfo.getLastCameraId());
    	vidinfo.setFreq(esVidinfo.getFreq());
    	vidinfo.setName(esVidinfo.getPeopleName());
    	vidinfo.setIdCard(esVidinfo.getCredentialNo());
    	vidinfo.setHqFacePath(esVidinfo.getHqFacePath());
		if(StringUtils.isNotEmpty(esVidinfo.getFeatureId())) {
			vidinfo.setHqFeatureId(Long.valueOf(esVidinfo.getFeatureId()));
		}
		return vidinfo;
    }
}
